떡밥위키
최근 변경
최근 토론
특수 기능
파일 올리기
작성이 필요한 문서
고립된 문서
고립된 분류
분류가 되지 않은 문서
편집된 지 오래된 문서
내용이 짧은 문서
내용이 긴 문서
차단 내역
RandomPage
라이선스
IP 사용자
216.73.216.107
설정
다크 모드로 전환
로그인
서버 점검 공지
|
개인정보 처리방침 개정 안내
C(프로그래밍 언어)
(r1 문단 편집)
닫기
RAW 편집
미리보기
=== 스택(Stack)과 힙(Heap) === 현대 컴퓨터와 운영체제의 메모리 관리에서 가장 중요한 개념 중 하나는 스택과 힙이다. 스택과 힙은 메모리 저장공간의 유형이며, 어디에 자료가 저장되는가를 나타내고, 또한 해당 데이터의 생성과 소멸이 어떤 방식으로 이루어지는지를 결정한다. 스택은 힙과 비교할 때 다음과 같은 특성을 가진다. 스택은 이름 그대로 스택 자료구조와 스택 포인터를 가지고 구현되며, 더 빠르고 간단한 방식으로 할당과 해제가 이루어진다. 대신 그 순서가 [[후입선출법]]을 따르기에 자유롭지 못하고, 할당 가능한 용량도 힙에 비해 작은 편이다. 그러나 C언어에서는 이 스택과 힙의 개념을 사용하지 않고[* C 표준에는 스택과 힙이라는 단어들이 단 한번도 나오지 않는다.], 대신에 저장수명(storage duration)이라는 개념을 사용한다. 즉, C언어의 추상기계는 스택과 힙을 모르며, 이에 의지하여 동작하지 않는다. 저장수명은 크게 static, thread, automatic, allocated의 네 종류가 있다. static은 프로그램의 시작부터 끝에까지 존재하고, thread는 쓰레드별로 분리하여 존재하며, automatic은 해당 블록이 시작할 때 생성되어 끝날 때 소멸되고, allocated는 메모리 할당 함수들에 의해 생성되고 free() 함수로 해제될 때까지 존재한다. 이 네 가지의 저장 수명들을 가지는 메모리 개체들을 힙과 스택 중 어디에 저장할 것인지는 C언어가 알아서 처리한다. 일반적으로는 automatic은 스택에, static은 BSS, Data, Text영역 중 한곳에, allocated는 힙에 저장하나 꼭 그래야 하는 것은 아니다. 컴파일러는 굳이 그걸 어떤 영역에 보관해야 한다고 보장하거나 알릴 필요는 없다. 그러나 그럼에도 불구하고 C언어 코드 상의 어떤 변수가 스택, 힙, 또는 어떤 메모리 영역에 저장될 것인지에 대한 감각을 훈련하는 것은 효율적인 코드를 작성하기 위해 매우 중요하다. 일반적으로 힙에서 메모리를 할당받아 오는 것이 스택에 변수를 만드는 것보다 더 많은 동작을 필요로 하고, 캐시의 지역성까지도 이에 영향을 받을 수 있기 때문에 각각의 저장수명들을 필요와 상황에 맞게 적절히 활용할 수 있어야 한다.
요약
문서 편집을
저장
하면 당신은 기여한 내용을
CC BY-NC-SA 2.0 KR
또는
기타 라이선스 (문서에 명시된 경우)
로 배포하고 기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다. 이
동의는 철회할 수 없습니다.
비로그인 상태로 편집합니다. 로그인하지 않은 상태로 문서 편집을 저장하면, 편집 역사에 본인이 사용하는 IP(216.73.216.107) 주소 전체가 영구히 기록됩니다.
저장
사용자
216.73.216.107
IP 사용자
로그인
회원가입
최근 변경
[불러오는 중...]
최근 토론
[불러오는 중...]